package com.baizhi.listx;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * 自定义元素数组排序
 */
public class ListDemo09 {
    public static void main(String[] args) {
        List<Person> list = new ArrayList<>();
        list.add(new Person("张三",17,'男'));
        list.add(new Person("宋江",32,'男'));
        list.add(new Person("李逵",28,'男'));
        list.add(new Person("扈三娘",19,'女'));
        list.add(new Person("贾宝玉",16,'男'));
        list.add(new Person("林黛玉",13,'女'));
        list.add(new Person("孙悟空",120,'男'));
        list.add(new Person("白骨精",99,'女'));

        /*
           Collections.sort(List list)
           此方法要求传入的List中的元素对应类型必须实现Comparable，否则编译不通过
           Comparable接口是用来表示实现类是可以比较大小的，实现类需要重写其compareTo方法，指定比较规则
           所有的包装类，和String都实现了这个接口

           这种如果不能直接使用，我们就建议不要使用了，因为该方法的代码会对我们的代码造成侵入性、
           侵入性：当我们要调用Collections.sor(List list)的时候，需要我们更改其他类（Person）
               侵入性不利于后续代码的维护，应当尽量避免
         */
        //Collections.sort(list);

        //通过Comparator 自主实现升序排序
        Comparator<Person> c = new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                return o1.getAge() - o2.getAge();
            }
        };
        Collections.sort(list,c);

        System.out.println(list);

    }
}
